好的,經過幾天的基礎建設,想必大家也都躍躍欲試了,我們今天正式進入實作部分。在每次實作,我們都會分為幾個步驟:
在最一開始,我們一定要知道為什麼要寫著個爬蟲,和目標是什麼。因為在研究爬蟲的過程當中,會產生很多資料,很容易令人眼花撩亂,有些資料對我們有用,但更多的資料是在我們這次的範疇當中無用的,若我們花太多心思在枝節上面,反而會讓我們更難找到核心道路。所以在實作的過程當中,只留下必要的路徑和程式碼,其他東西,不知道的、不必要的,一概不放進我們的 code。
當我們有了明確的目標之後,我們需要人工手動走一次最正式的流程,例如我今天要爬取 FB 的個人文章頁面,那我會開啟無痕視窗,包含我輸入某個網址、點了某個按鈕、送了某個 request,這些都必須一步一步走,走的過程當中,同時腦袋會開始思考「這個動作有沒有難度」。
在我們走完整個流程後,我們會針對整個流程下去分解,分成若干個小步驟,亦即說,若我每個步驟都完成了,那麼這個完整的流程就可以確保沒有問題。分解完後,打開 postman 一步一步去模擬每個步驟的 request。在模擬 request 的時候,我們也必須清楚 request 要送出的參數是否都能在我們的掌控之中。
最後,我們會開始實作程式碼,在這個階段,我會建議各位把每個步驟都當成是一個 function 來撰寫,一個一個完成。在完成所有 function 之後,我們再將整個邏輯像是樂高積木一樣組合起來。
那就讓我們來開始牛刀小試吧!
在參賽的過程當中,我都有觀察到訂閱數和瀏覽數,似乎是一種人氣,那我能不能為自己增加點人氣滿足自己小小的虛榮心?如何增加瀏覽數是我這次的目標。

我發現我只要點擊文章,瀏覽數就會增加,看起來好像有點眉目,我猜測可能只是文章網址開啟時候的 counter。

如此一來,我直接 refreh 文章頁面,觀察看看瀏覽數是否有變化,果然如我所預料。

接下來為確保不會受其他因素影響,我打開無痕視窗,再重新 refresh 文章頁面。瀏覽數持續有變化,這個時候嘴角就開始上揚了。
在這探訪的過程,大概已經確定只需要送一個 get request 到該頁面,我就能模擬這個動作,那直接使用 postman 來測測看吧。

確定模擬試成功的,就能進入程式撰寫階段了。
只有一個 request 的 get method 發送,那麼程式碼就非常的單純
var request = require('request');
request('https://ithelp.ithome.com.tw/articles/10190796');
實作之後確認可以增加瀏覽數,那就來跑個迴圈吧!
var request = require('request');
for(var i = 0; i<100; i++){
request('https://ithelp.ithome.com.tw/articles/10190796');
}
既然知道了他只收 get request 就會增加,那麼殺雞其實不用牛刀,我們直接對他做 ab 就好了XD
https://httpd.apache.org/docs/2.4/programs/ab.html
ab -n 100 https://ithelp.ithome.com.tw/articles/10190796
好的,滿足了小小虛榮心,那我們下回再見...
ps. 請工作人員不要砍我的文章QQ
提醒你一件事
iT邦幫忙有防止DDOS的機制
來自同一IP短時間內連續大量的request
是有可能會被ban的
為什麼我知道?
因為我就被ban過![]()
基本上這不是拿來惡意衝高人氣的XDDD
技術本身沒有好壞,端看怎麼用他和理解他
因為了解如何用他,才會知道如何防範
再來提一下 IP ban 的狀況(純技術討論,千萬不要嘗試...)
基本上這是一種攻防
你來衝人氣肯定會使被 ban 的風險
而更進一步簡單的就是 proxy or vpn 換 IP
或者有自身高流量的網站
也能夠透過 jsonp 來讓使用者多發個 request
不過以上都有被發現的線索就是![]()
怎麼防止這種靠程式造訪而非真人在瀏覽的點擊計數,
對這個不是靠點擊數為依據來營利的網站,
只要沒造成運作上的阻礙或過於濫用,
大概不會太過理會,
但對於靠點擊來付費或營收的廠商,
怎麼防這種 Click Fraud 點擊詐欺 就是個有趣的議題了。
這篇 How to Prevent Hackers from Using Bad Bots To Exploit Your Website 是不錯的綜觀這方面議題的開始。
拋磚引玉,感謝大師